"""
数学操作函数
"""
from typing import Any

from moxi_server.src import getLogger

logger = getLogger(__name__)

def add(a: float, b: float) -> Any:
    """
    这是一个加法函数，将两个数相加得到和并返回
    Args:
        a: 第一个数
        b: 第二个数
    Return:
        返回两数之和
    """
    return a + b


def sub(a: float, b: float) -> Any:
    """
    这是一个减法函数，将两个数相减得到差并返回
    Args:
        a: 被减数
        b: 减数
    Return:
        返回两数之差
    """
    return a - b


def mul(a: float, b: float) -> Any:
    """
    这是一个乘法函数，将两个数相乘得到积并返回
    Args:
        a: 第一个数
        b: 第二个数
    Return:
        返回两数之积
    """
    return a * b


def div(a: float, b: float) -> Any:
    """
    这是一个除法函数，将两个数相除得到商并返回
    Args:
        a: 被除数
        b: 除数
    Return:
        返回两数之商
    """
    return a / b


def mod(a: float, b: float) -> Any:
    """
    这是一个取余函数，将两个数相除得到余数并返回
    Args:
        a: 被除数
        b: 除数
    Return:
    返回两数之余数
        """
    return a % b


def maxBy(a: float, b: float) -> Any:
    """
    这是一个找最大值的函数，比较两个数返回最大值，当提问者询问两个数谁大时调用，返回大的值
    Args:
        a: 第一个数
        b: 第二个数
    Return:
        返回最大值
    """
    logger.debug(f"正在比大小：{a} <-> {b}: {max(a, b)}")
    return max(a, b)


def minBy(a: float, b: float) -> Any:
    """
    这是一个找最小值的函数，比较两个数返回最小值，当提问者询问两个数谁小时调用，返回小的值
    Args:
        a: 第一个数
        b: 第二个数
    Return:
        返回最小值
        """
    logger.debug(f"正在比大小：{a} <-> {b}: {min(a, b)}")
    return min(a, b)
